#ifndef __IABSTRACTSTACK_H__
#define __IABSTRACTSTACK_H__

#include <lampe/types.h>
#include <lampe/IReferenceCounted.h>

namespace lampe{

template <typename T>
class IAbstractStack:public virtual lampe::IReferenceCounted
{
public:
	virtual void push(T variable)=0;
	virtual T pop()=0;
	virtual T get()=0;
	virtual bool eof()=0;
	virtual u32 size()=0;
	virtual void clear()=0;
	virtual T get(u32 index)=0;
	T operator[](u32 index){return get(index);}
};

}//namespace lampe
#endif // IABSTRACTSTACK_H
